home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Hyper / Co-Cz / Cursor.cpt / Custom_cursor / card_2877.txt < prev    next >
Text File  |  1990-07-28  |  6KB  |  182 lines

  1. -- card: 2877 from stack: in
  2. -- bmap block id: 3318
  3. -- flags: 0000
  4. -- background id: 2611
  5. -- name: 
  6. ----- HyperTalk script -----
  7. on openCard
  8.   set the scroll of cd fld information to 0
  9. end openCard
  10.  
  11.  
  12. -- part 1 (field)
  13. -- low flags: 01
  14. -- high flags: 0007
  15. -- rect: left=136 top=21 right=341 bottom=506
  16. -- title width / last selected line: 0
  17. -- icon id / first selected line: 0 / 0
  18. -- text alignment: 0
  19. -- font id: 3
  20. -- text size: 12
  21. -- style flags: 0
  22. -- line height: 16
  23. -- part name: information
  24.  
  25.  
  26. -- part 2 (button)
  27. -- low flags: 00
  28. -- high flags: A003
  29. -- rect: left=4 top=51 right=73 bottom=129
  30. -- title width / last selected line: 0
  31. -- icon id / first selected line: 0 / 0
  32. -- text alignment: 1
  33. -- font id: 0
  34. -- text size: 12
  35. -- style flags: 0
  36. -- line height: 16
  37. -- part name: start busy cursor
  38. ----- HyperTalk script -----
  39. on mouseUp
  40.   slug 7
  41.   if the result is not empty then put the result
  42. end mouseUp
  43.  
  44.  
  45.  
  46. -- part 3 (button)
  47. -- low flags: 00
  48. -- high flags: A003
  49. -- rect: left=5 top=147 right=169 bottom=130
  50. -- title width / last selected line: 0
  51. -- icon id / first selected line: 0 / 0
  52. -- text alignment: 1
  53. -- font id: 0
  54. -- text size: 12
  55. -- style flags: 0
  56. -- line height: 16
  57. -- part name: Stop
  58. ----- HyperTalk script -----
  59. on mouseUp
  60.   killslug
  61.   if the result is not empty then put the result
  62.   killCursor
  63.   if the result is not empty then put the result
  64.   set cursor to hand
  65. end mouseUp
  66.  
  67.  
  68.  
  69. -- part 4 (button)
  70. -- low flags: 00
  71. -- high flags: A003
  72. -- rect: left=3 top=111 right=132 bottom=141
  73. -- title width / last selected line: 0
  74. -- icon id / first selected line: 0 / 0
  75. -- text alignment: 1
  76. -- font id: 0
  77. -- text size: 12
  78. -- style flags: 0
  79. -- line height: 16
  80. -- part name: install cross cursor
  81. ----- HyperTalk script -----
  82. on mouseUp
  83.   setCursor "3"
  84.   if the result is not empty then put the result
  85. end mouseUp
  86.  
  87.  
  88.  
  89. -- part 5 (button)
  90. -- low flags: 00
  91. -- high flags: A003
  92. -- rect: left=3 top=186 right=208 bottom=128
  93. -- title width / last selected line: 0
  94. -- icon id / first selected line: 0 / 0
  95. -- text alignment: 1
  96. -- font id: 0
  97. -- text size: 12
  98. -- style flags: 0
  99. -- line height: 16
  100. -- part name: Stop busy
  101. ----- HyperTalk script -----
  102. on mouseUp
  103.   killslug
  104.   if the result is not empty then put the result
  105.   set cursor to "hand"
  106. end mouseUp
  107.  
  108.  
  109.  
  110. -- part contents for card part 1
  111. ----- text -----
  112. I developed a custom cursor routine for some of my stacks which may be useful to others. If you have comments or find bugs please write me:
  113. David R. Waddell
  114. 918 Second Street SW
  115. Rochester, MN 55902
  116.  
  117. email waddell@mayo.edu
  118. CIS 71020,443
  119.  
  120. These routines use a technique that is independent of HyperCard to switch the cursors regularly. 
  121.  
  122.                    ANIMATED CURSORS
  123. For animated cursors the command which starts the cursors changing is:
  124. slug 7
  125. The parameter can be between 0 and 7 and is the number of cursors to switch between. The default is 5. I call it inside scripts to make a "busy" cursor.
  126.  
  127. The command to stop the animated cursor is: 
  128.   killslug
  129.  
  130. Since I use it as a busy cursor, I put the following handler into the stack script, or better yet the home stack script:
  131.  
  132. on idle
  133.   killslug
  134. end idle
  135.  
  136. This will stop it when something unpredictable happens like a script bombing.
  137.  
  138. In all cases you should put the following handler into the stack script of your stack:
  139.  
  140. on closeStack
  141.   killslug
  142. end closeStack
  143.  
  144. The install routine in the "install cursor" stack will put this handler as well as everything else that is necessary into your stack.
  145.  
  146.                     Customizing animated cursors:
  147. The resources that are used for the animated cursors have ids between 300 and 307. You can customize them using a resource editor like ResEdit from Apple which is available through MAUG libraries. The program can be used to edit graphic resources such as cursors using tools much like MacPaint. Although many parts of the program are easy to use, the ResEdit program can wreck havoc if you are not careful. Use it only with copies of critical programs.
  148.  
  149.                           SINGLE CURSORS
  150. Custom single cursors can be produced by a second set of routines. The routine which starts the cursor is 
  151.   setCursor "name" 
  152.              or 
  153.   setCursor "resource id "
  154. This routine can be used to effectively overide the HyperCard cursors outside of executing scripts. HyperCard is still able to change its cursor when you move to areas at which it would normally change, however the HyperCard cursor will be rapidly replaced with your cursor. 
  155.  
  156. To stop this cursor from overiding the HyperCard cursors use the following command:
  157.   killCursor
  158. As above, a script should be included in your stack to call this routine before closing the stack. The install stack will do this for you.
  159.  
  160. Occasionally a cursor gets left on the screen. However, it is not part of your stack and it will disappear when that area of the screen is updated.
  161.  
  162. For hackers:
  163. The following additional resources  are used to switch the cursors:
  164.  
  165. vbiT id=128 
  166. This resource has space for eight cursors which is followed by the routine that is installed as a vertical blanking interval task to switch the cursors.
  167.  
  168. vbiT id=129
  169. This resource has space for a single cursor. It is installed by the "setCursor" routine.
  170.  
  171. XCMD: "slug" 
  172. This makes a copy of the animated cursors (ids 300-307) and installs them in a copy of the vbiT resource which was made using NewPointer. It then installs it as a vertical blanking interval task and puts a copy of the pointer into the TEMP id=128 resource.
  173.  
  174. XCMD: "setCursor"
  175. This does the same as slug for a single cursors. It stores its pointer in the TEMP id=129 resource.
  176.  
  177. XCMD: "killslug"
  178. This gets the pointer in the TEMP id=128 resource and looks to see if it is installed in the queue of vertical blanking interval tasks. If it is there it removes it.
  179.  
  180. XCMD: "killCursor"
  181. This gets the pointer stored in the TEMP id=129 resource and removes it from the blanking interval queue if it is there.
  182.